home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B).zip
/
Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B).do
/
PRO.VI.bas
< prev
next >
Wrap
BASIC Source File
|
1996-12-24
|
9KB
|
297 lines
10 GOSUB 9000
20 GOSUB 1000
30 GOSUB 2000
40 GOSUB 4000
45 GOSUB 5000
50 GOSUB 6000
60 GOTO 30
100 POKE 54,189: POKE 55,158
110 PRINT CHR$(4);"RUN PHYSICS.MENU"
1000 REM <CTRL-J><CTRL-J>FINAL WORDS<CTRL-J>
1005 POKE 54,0: POKE 55,96
1010 HGR2 : VTAB 1
1020 PRINT "This is the end of the formal"
1021 PRINT : PRINT "demonstration. If you would like, you"
1022 PRINT : PRINT "can experiment with projectile motion"
1023 PRINT : PRINT "with the use of this last part of the"
1024 PRINT : PRINT "program."
1025 PRINT : PRINT : PRINT "It allows you to enter an initial"
1026 PRINT : PRINT "velocity and angle of inclination of a"
1027 PRINT : PRINT "projectile and see the path traced out"
1028 PRINT : PRINT "on the computer's high resolution"
1029 PRINT : PRINT "screen."
1050 GOSUB 15000
1080 RETURN
2000 REM <CTRL-J><CTRL-J>GET INFORMATION<CTRL-J>
2010 HGR2
2020 VTAB 1
2025 POKE 54,0: POKE 55,96
2030 PRINT "1. Initial velocity ";V0;"m/sec "
2040 PRINT : PRINT "2. Angle of inclin. ";AN; CHR$(2);" "
2050 PRINT : PRINT "3. max Y (height) "; INT(183/YS);" "
2060 PRINT : PRINT "4. max X (distance) "; INT(274/XS);" "
2070 PRINT : PRINT "5. Trace mode ";TR$(TR);" "
2080 PRINT : PRINT
2090 PRINT "6. Dotted lines"
2100 PRINT : PRINT "7. Graph projectile"
2110 PRINT : PRINT "8. End and return to MAIN MENU"
2120 PRINT : PRINT "Enter your choice."
2130 VT = 20
2140 GOSUB 17000
2150 CH = VAL(G$)
2160 IF CH < = 0 OR CH >9 THEN 2010
2170 ON CH GOTO 2180,2230,2280,2540,2800,2820,2980,100
2180 VTAB 18:VT = 20
2190 PRINT "Enter new initial velocity."
2200 GOSUB 17000
2210 V0 = VAL(G$)
2211 FOR Y = 18 TO 23
2212 VTAB Y: PRINT " "
2213 NEXT Y
2220 GOTO 2020
2230 VTAB 18:VT = 20
2240 PRINT "Enter new angle of inclination."
2250 GOSUB 17000
2260 AN = VAL(G$)
2261 FOR Y = 18 TO 23
2262 VTAB Y: PRINT " "
2263 NEXT Y
2270 GOTO 2020
2280 HGR2 : VTAB 1
2290 PRINT "The following are choices for the"
2300 PRINT : PRINT "maximum height that will fit on the"
2310 PRINT : PRINT "graph. Which one would you like??"
2320 PRINT
2330 PRINT "1. 183m"
2340 PRINT "2. 91m"
2350 PRINT "3. 61m"
2360 PRINT "4. 45m"
2370 PRINT "5. 36m"
2380 PRINT "6. other"
2390 PRINT : PRINT "enter your choice"
2400 VT = 16: GOSUB 17000
2410 YS = VAL(G$)
2420 IF YS <0 OR YS >6 OR YS < > INT(YS) THEN HGR2 :VT = 1: GOTO 2280
2430 IF YS < >6 THEN 2530
2440 HGR2 : VTAB 1
2450 PRINT "Please enter a number to indicate the"
2460 PRINT : PRINT "maximum height on the graph. When you"
2470 PRINT : PRINT "divide 183 by this number, you will have"
2480 PRINT "the number of meters that will fit on"
2490 PRINT : PRINT "the graph."
2500 VT = 11
2510 GOSUB 17000
2520 YS = VAL(G$)
2530 GOTO 2010
2540 HGR2 : VTAB 1
2550 PRINT "The following choices are for the"
2560 PRINT : PRINT "maximum distance that will fit on the"
2570 PRINT : PRINT "screen. Which one would you like??"
2580 PRINT
2590 PRINT "1. 274m"
2600 PRINT "2. 137m"
2610 PRINT "3. 92m"
2620 PRINT "4. 68m"
2630 PRINT "5. 54m"
2640 PRINT "6. other"
2650 PRINT : PRINT "enter your choice"
2660 VT = 16: GOSUB 17000
2670 XS = VAL(G$)
2680 IF XS <0 OR XS >6 OR XS < > INT(XS) THEN HGR2 :VT = 1: GOTO 2540
2690 IF XS < >6 THEN 2790
2700 HGR2 : VTAB 1
2710 PRINT "Please enter a number to indicate the"
2720 PRINT : PRINT "maximum distance on the graph. When you"
2730 PRINT "divide 274 by this number, you will have"
2740 PRINT "the number of meters that will fit on"
2750 PRINT : PRINT "the graph."
2760 VT = 11
2770 GOSUB 17000
2780 XS = VAL(G$)
2790 GOTO 2010
2800 TR = TR +1 -2 *(TR = 1)
2810 GOTO 2010
2820 HGR2 : VTAB 1
2830 PRINT "Where would you like the dotted lines?"
2840 PRINT "(press 'G' to Go back to menu)"
2850 PRINT : PRINT "1. greatest height reached."
2860 PRINT "2. midpoint of total distance."
2870 PRINT "3. point where it hits ground."
2880 FOR J = 1 TO 3
2890 VTAB J +3: HTAB 35
2900 IF DOT(J) = 1 THEN PRINT "Yes": GOTO 2920
2910 PRINT "No "
2920 NEXT J
2930 VT = 10: GOSUB 17000
2940 IF G$ = "G" THEN 2010
2950 J = VAL(G$)
2960 DOT(J) = DOT(J) +1 -2 *(DOT(J) = 1)
2970 GOTO 2880
2980 RETURN
4000 REM <CTRL-J><CTRL-J>SET UP GRID<CTRL-J>
4010 HGR2
4020 HCOLOR= 3
4030 HPLOT 5,0 TO 5,183 TO 279,183
4040 FOR X = 0 TO INT(274/XS)
4050 Y1 = 187
4060 IF X/5 = INT(X/5) THEN Y1 = 189
4070 IF X/10 = INT(X/10) THEN Y1 = 191
4080 HPLOT X *XS +5,183 TO X *XS +5,Y1
4090 NEXT X
4100 FOR Y = 0 TO INT(183/YS)
4110 X1 = 3
4120 IF Y/5 = INT(Y/5) THEN X1 = 1
4130 IF Y/10 = INT(Y/10) THEN X1 = 0
4140 HPLOT 5,183 -Y *YS TO X1,183 -Y *YS
4150 NEXT Y
4160 RETURN
5000 REM <CTRL-J><CTRL-J>dotted lines<CTRL-J>
5010 THETA = AN *3.141592653/180
5020 VH = V0 * COS(THETA):VV = V0 * SIN(THETA)
5030 T = (0 -VV)/G
5040 S = 1/2 *G *T *T +VV *T
5050 IF DOT(1) = 0 THEN 5120
5060 Y = 183 -S *YS
5070 IF Y <0 OR Y >183 THEN 5120
5080 HCOLOR= 3
5090 FOR X = 5 TO 265 STEP 10
5100 HPLOT X,Y TO X +5,Y
5110 NEXT X
5120 IF DOT(2) = 0 THEN 5190
5130 D = T *VH
5140 X = 5 +D *XS
5150 IF X <5 OR X >279 THEN 5190
5160 FOR Y = 183 TO 10 STEP -10
5170 HPLOT X,Y TO X,Y -5
5180 NEXT Y
5190 IF DOT(3) = 0 THEN 5260
5200 D = T *2 *VH
5210 X = 5 +D *XS
5220 IF X <5 OR X >279 THEN 5260
5230 FOR Y = 183 TO 10 STEP -10
5240 HPLOT X,Y TO X,Y -5
5250 NEXT Y
5260 RETURN
6000 REM <CTRL-J><CTRL-J>THROW BALL<CTRL-J>
6010 T = 0:X1 = 0:Y1 = 0
6020 HCOLOR= 3
6030 HPLOT 5,183
6040 T = T +.05
6050 H = 1/2 *G *T *T +VV *T
6060 D = VH *T
6070 X = XS *D +5
6080 Y = 183 -H *YS
6090 IF X >279 THEN 6230
6100 IF TR = 1 THEN 6180
6110 HCOLOR= 0
6120 HPLOT X1,Y1
6130 IF H < = 0 THEN 6230
6140 IF Y <0 THEN 6220
6150 HCOLOR= 3
6160 HPLOT X,Y
6170 GOTO 6210
6180 IF Y <0 THEN 6210
6190 HPLOT TO X,Y
6200 IF H < = 0 THEN 6230
6210 X1 = X:Y1 = Y
6220 GOTO 6040
6230 POKE -16368,0
6240 IF PEEK( -16384) = 160 THEN 6250
6242 S = S +1: IF S >5 THEN S = 0:J = PEEK( -16336)
6244 GOTO 6240
6250 RETURN
9000 REM <CTRL-J><CTRL-J>INITIALIZE<CTRL-J>
9010 HIMEM: 16384
9020 IF PEEK(24576) = 72 THEN 9050
9030 PRINT CHR$(4);"BLOAD HIRES CHAR"
9040 PRINT CHR$(4);"BLOAD CHAR TABLE"
9050 VT = 1:SOUND = 0:CENTER = 0:WIDTH = 40
9060 G = -9.8
9070 HOME
9080 XS = 3:YS = 3
9090 TR$(0) = "OFF":TR$(1) = "ON"
9100 FOR X = 768 TO 786
9110 READ Y
9120 POKE X,Y
9130 NEXT X
9140 RETURN
9300 :
9310 '' DATA
9320 :
9330 DATA 173,48,192,136,208,4,198,7,240,8,202,208,246,166,6,76,0,3,96
15000 REM <CTRL-J><CTRL-J>PRESS ANY KEY<CTRL-J>
15010 POKE -16368,0
15020 CU$ = "!/-\": VTAB 24
15030 PRINT "! press any key"
15040 C = 1:L = 4
15050 VTAB 24: HTAB 1: PRINT MID$ (CU$,C,1)
15060 KEY = PEEK( -16384): IF KEY <128 THEN C = C +1 -L *(C = L): GOTO 15050
15070 HGR2 : VTAB 1: RETURN
17000 REM <CTRL-J><CTRL-J>HIRES INPUT<CTRL-J>
17010 POKE -16368,0
17020 HTAB 1: VTAB VT
17030 PRINT "===>"
17040 HT = 4
17050 G$ = ""
17060 A = PEEK( -16384)
17070 VTAB VT: HTAB HT +1: PRINT " "
17080 VTAB VT: HTAB HT +1: PRINT CHR$(95)
17090 IF A <127 THEN 17060
17100 POKE -16368,0
17110 IF A = 141 THEN 17600
17120 IF A = 155 THEN 17580
17130 IF A < >147 THEN 17160
17140 SOUND = SOUND +1: IF SOUND = 2 THEN SOUND = 0
17150 GOTO 17060
17160 IF A < >136 THEN 17380
17170 IF NOT SOUND THEN 17210
17180 FOR Z = 1 TO 20 STEP 5
17190 POKE 6,Z: POKE 7,2: CALL 768
17200 NEXT
17210 L = LEN(G$)
17220 IF L >1 THEN 17320
17230 IF L = 1 THEN 17290
17240 IF NOT SOUND THEN 17290
17250 FOR Y = 1 TO 10
17260 FOR Z = 1 TO 25 STEP 6
17270 POKE 6,Z: POKE 7,3: CALL 768
17280 NEXT : NEXT
17290 VTAB VT: HTAB 5: PRINT " "
17300 G$ = "":HT = 4
17310 GOTO 17060
17320 L = L -1
17330 G$ = LEFT$(G$,L)
17340 HT = L +4
17350 VTAB VT: HTAB HT +1: PRINT " "
17360 VTAB VT +1: HTAB HT +1: PRINT " "
17370 GOTO 17060
17380 A = A -128
17390 IF A >64 AND A <91 THEN 17420
17400 A$ = CHR$(A)
17410 GOTO 17430
17420 A$ = CHR$(A +32 -32 *(UC >0))
17430 G$ = G$ +A$
17440 L = LEN(G$)
17450 HT = L +4
17460 IF SUB = 0 THEN 17510
17470 IF A$ = "+" OR A$ = "-" THEN S = 1
17480 IF S = 1 THEN 17510
17490 IF ASC(A$) <48 OR ASC(A$) >57 THEN 17510
17500 VTAB VT +1: HTAB HT: PRINT A$: GOTO 17520
17510 VTAB VT: HTAB HT: PRINT A$
17520 IF UC = 1 THEN UC = 0
17530 IF NOT SOUND THEN 17570
17540 FOR Z = 20 TO 1 STEP -2
17550 POKE 6,Z: POKE 7,2: CALL 768
17560 NEXT
17570 GOTO 17060
17580 UC = UC +1: IF UC = 3 THEN UC = 0
17590 GOTO 17060
17600 VTAB VT: HTAB HT +1: PRINT " "
17610 IF NOT SOUND THEN 17660
17620 FOR Y = 1 TO 3
17630 FOR Z = 40 TO 1 STEP -4
17640 POKE 6,Z: POKE 7,2: CALL 768
17650 NEXT : NEXT
17660 VT = VT +2
17670 RETURN